草庐IT

C++ 多重虚拟继承与 COM

全部标签

java - File.listFiles() 和区分物理文件夹和虚拟文件夹

File.listFiles()方法列出文件夹的内容。然而,在Windows上,当您在根驱动器上调用该方法时,它还会产生一些-缺少更好的短语-“虚拟”文件夹(如“文档和设置”,在最近的Windows版本中被“用户”取代).如果您随后为那些“虚拟”文件夹之一调用listFiles(),它总是返回null。这就是我的问题所在,因为我想递归遍历所有文件夹。我需要一种方法来过滤掉这些文件夹,最好不要通过检查它们的名称...还有一些普通用户看不到的其他文件夹(例如“系统卷信息”或该驱动器的回收站文件夹),我很乐意找到一种方法将它们过滤掉好吧,没有将名字列入黑名单。不幸的是,这些文件夹的行为就像真

windows - 为什么我的 COM 工厂在程序生命周期内从未被释放?

我有一个nativeC++ATL进程内COM服务器。单独的测试程序调用CoInitialize(),调用CoCreateInstance(),然后在指针上调用Release(),然后调用CoUnitialize()并退出。如果我在VisualC++调试器下运行测试程序,调试CRT会报告一次内存泄漏,并且每次分配的编号都是相同的。我用了anallocationhook发现没有返回堆的对象是类工厂对象。所以基本上会发生以下情况:程序调用CoCreateInstance()COM内部调用DllGetClassObject()ATL实例化工厂并将所有权传递给调用者(COM内部)然后工厂永远不会

c - 实现 Com 端口终端的最简单方法。 ( Windows ,C)

我需要编写一个终端来与COM端口通信,我需要能够从COM端口以及同时从控制台发送命令。(我想通过两个相互无线通信的传感器节点访问计算机,所以我仍然需要一种从节点向计算机发送内容的方法)现在,我已经实现了一个非重叠串行通信,但我不确定如何实现“同时发送和接收”部分,我只有大约4天的时间来解决这个问题。那里并没有那么多信息,所以我欢迎任何关于如何实现最快或最简单方法的指示。据我所知,重叠I/O通信在时间上并不是很友好。是否可以使用多线程(仅重叠)来做到这一点?我猜在那种情况下我必须每隔几毫秒读取一次缓冲区并为输入创建一个自己的线程? 最佳答案

c# - 如何恢复未正确释放的 COM 对象?

当有人使用任务管理器结束已实例化COM对象的.NET进程时,AFAIK无法在try{}finally{}中调用Marshal.FinalReleaseComObject,使用{}或事件处理block。下次启动应用程序时,COM对象处于不可用状态,我需要重新启动机器才能使其再次运行。我使用Marshal.BindToMoniker实例化对象。我做错了什么,我错过了什么吗?我尝试了Saeed的建议,但没有用privateconstintWM_CLOSE=0x0010;protectedoverridevoidWndProc(refMessagem){if(m.Msg==WM_CLOSE){

c++ - 使用 Windows USB 虚拟 Com 端口识别断开连接事件

我正在开发一个使用虚拟串行端口设备驱动程序与USB设备通信的应用程序。我们遇到过这样一种情况,如果在串口句柄打开时设备被拔掉(或死机),那么在串口句柄关闭后重新连接的唯一方法是拔掉设备,然后再插回。如果我能够足够快地检测到故障,则有潜在的解决方法。问题在于,在这些条件下,以下函数调用不会报告错误:ClearCommErrorGetCommModemStatusReadFile根据我的经验,当设备被拔掉时唯一返回错误的函数是WriteFile。可以理解,我真的不想为了测试端口连接是否仍然有效而编写无意义的数据。我的问题是是否有一些方法可以用来确定端口连接是否仍然有效。如果对我正在做的事情

windows - _USING_V110_SDK71_ 未从 VC++ 2015、v140_xp、Release 中的默认值继承?

总结Release版编译时报atlcore.h未声明标识符SetDefaultDllDirectories,编译Debug时报错。进一步调查表明_USING_V110_SDK71_发挥了作用。它应该继承自项目默认值(见下图),但它不是用于组合:ReleaseMinDependency和v140_xp。详细信息:我正在将C++nativeATL应用程序从VisualC++2005迁移到VisualC++2015。目标是尽可能长时间地保持WindowsXP运行版本。因此,为项目设置了v140_xpPlatformToolset。它适用于调试版本。但是,它会导致ReleaseMinDepen

windows - 关于使用 subst 创建虚拟驱动器

在Windows中使用subst命令创建虚拟驱动器有什么意义。我正在为我的原始源代码目录创建虚拟驱动器,然后使用虚拟驱动器进行编译、编辑等所有操作。它的主要用途是什么?我们不能在我checkout源代码的原始目录上工作吗? 最佳答案 (收集了迄今为止对社区答案的所有评论,因为它们都很好并且切中要点,共同构建了一个很好的答案。随时添加更多信息。-Stephan)这取决于。例如,您的工具链可能对路径有限制——不支持长文件名(MSDOS时代)或不支持超过260个符号的路径(Windows95时代)。通常对于现代工具来说,它是不需要的——v

c# - 创建一个 Python COM 对象

我想知道是否有某种方法可以将python脚本封装为COM对象。我看到很多主题都在谈论从python调用COM组件,但我对相反的方向感兴趣:创建一个实际上是python的COM组件。我有一些用python制作的库,我想从excel电子表格中调用它们,我认为这可能是一个很好的方法。 最佳答案 可能实现此目的的一种方法是使用.NET创建COM对象并使用IronPython执行Python代码。这是它如何工作的想法:usingSystem;usingSystem.Runtime.InteropServices;usingSystem.IO;

c++ - GetSystemInfo 是否为您提供虚拟 CPU 的总数(即超线程)?

GetSystemInfo会给你物理CPU/内核的数量,但我想知道虚拟CPU的总数。IE。在新的Nahelam芯片上,它们有4个内核,但显示为8个cpu。如果GetSystemInfo没有给出这个信息,我需要什么API(我见过一个获取逻辑处理器数量的函数,但它只适用于Vista。我需要支持XP)? 最佳答案 GetLogicalProcessorInformation功能(WindowsVista、WindowsXPProfessionalx64Edition、WindowsXPwithSP3)

windows - 如何检查CD-ROM是真实的还是虚拟的

我正在使用以下WMI查询来枚举我机器上的CD/DVR驱动器:select*fromWin32_CDROMDrive问题:有什么方法可以检测返回的驱动器中哪些是实际的物理CD/DVD驱动器,哪些是虚拟的(例如DeamonTools、MagicDisc)? 最佳答案 我认为没有办法,这是守护进程工具和这类软件的目标。也许如果你能设法获得每个CDROM驱动器的制造商或品牌,你总能看看它是否是“Daemontoolsinc.”。 关于windows-如何检查CD-ROM是真实的还是虚拟的,我们在